#pragma once
#include "ASN1Sequence.h"
#include "ASN1ObjectIdentifier.h"
#include "PKCSContent.h"

namespace AppliedCryptography
{
	class PKCSContentInfo : public ASN1Sequence
	{
	private:
		PKCSContent* _content;

	protected:
		PKCSContentInfo(ClassBits classBits, ConstructedBit constucted, TypeNumberBits number);

	public:
		PKCSContentInfo(PKCSContent* content = new PKCSContent());
		virtual ~PKCSContentInfo();

	private:
		virtual ASN1Sequence& add(ASN1Encodable& obj);
		virtual ASN1Encodable& get(unsigned int index) const;

	public:
		virtual PKCSContentInfo& setContent(PKCSContent& content);
		virtual std::vector<byte> getContentBits() const;
		virtual unsigned int size() const;
	};
}; // namespace AppliedCryptography
